@@ -1,5 +1,8 @@
ChangeLog for Log-Contextual
+0.00305 2011-07-27
+ - Fix regression that caused D* subs to dumper even if the log level was off
+
0.00304 2010-07-31
- Add $package_UPTO environment variable for WarnLogger
@@ -7,7 +7,7 @@ build_requires:
configure_requires:
ExtUtils::MakeMaker: 6.42
distribution_type: module
-generated_by: 'Module::Install version 1.00'
+generated_by: 'Module::Install version 1.01'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -20,6 +20,7 @@ no_index:
- t
requires:
Data::Dumper::Concise: 0
+ perl: 5.6.0
resources:
license: http://dev.perl.org/licenses/
-version: 0.00304
+version: 0.00305
@@ -3,6 +3,7 @@ use inc::Module::Install 0.91;
use strict;
use warnings FATAL => 'all';
+perl_version '5.006';
all_from 'lib/Log/Contextual.pm';
requires 'Data::Dumper::Concise';
@@ -4,7 +4,7 @@ package Module::Install::Base;
use strict 'vars';
use vars qw{$VERSION};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
}
# Suspend handler for "redefined" warnings
@@ -9,7 +9,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
@@ -515,6 +515,7 @@ sub __extract_license {
'GNU Free Documentation license' => 'unrestricted', 1,
'GNU Affero General Public License' => 'open_source', 1,
'(?:Free)?BSD license' => 'bsd', 1,
+ 'Artistic license 2\.0' => 'artistic_2', 1,
'Artistic license' => 'artistic', 1,
'Apache (?:Software )?license' => 'apache', 1,
'GPL' => 'gpl', 1,
@@ -550,9 +551,9 @@ sub license_from {
sub _extract_bugtracker {
my @links = $_[0] =~ m#L<(
- \Qhttp://rt.cpan.org/\E[^>]+|
- \Qhttp://github.com/\E[\w_]+/[\w_]+/issues|
- \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list
+ https?\Q://rt.cpan.org/\E[^>]+|
+ https?\Q://github.com/\E[\w_]+/[\w_]+/issues|
+ https?\Q://code.google.com/p/\E[\w_\-]+/issues/list
)>#gx;
my %links;
@links{@links}=();
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = 'Module::Install::Base';
$ISCORE = 1;
}
@@ -6,7 +6,7 @@ use Module::Install::Base ();
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '1.00';
+ $VERSION = '1.01';
@ISA = qw{Module::Install::Base};
$ISCORE = 1;
}
@@ -31,7 +31,7 @@ BEGIN {
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
- $VERSION = '1.00';
+ $VERSION = '1.01';
# Storage for the pseudo-singleton
$MAIN = undef;
@@ -467,4 +467,4 @@ sub _CLASS ($) {
1;
-# Copyright 2008 - 2010 Adam Kennedy.
+# Copyright 2008 - 2011 Adam Kennedy.
@@ -3,7 +3,9 @@ package Log::Contextual;
use strict;
use warnings;
-our $VERSION = '0.00304';
+our $VERSION = '0.00305';
+
+my @levels = qw(debug trace warn info error fatal);
require Exporter;
use Data::Dumper::Concise;
@@ -11,23 +13,9 @@ use Scalar::Util 'blessed';
BEGIN { our @ISA = qw(Exporter) }
-my @dlog = (qw(
- Dlog_debug DlogS_debug
- Dlog_trace DlogS_trace
- Dlog_warn DlogS_warn
- Dlog_info DlogS_info
- Dlog_error DlogS_error
- Dlog_fatal DlogS_fatal
- ));
-
-my @log = (qw(
- log_debug logS_debug
- log_trace logS_trace
- log_warn logS_warn
- log_info logS_info
- log_error logS_error
- log_fatal logS_fatal
- ));
+my @dlog = ((map "Dlog_$_", @levels), (map "DlogS_$_", @levels));
+
+my @log = ((map "log_$_", @levels), (map "logS_$_", @levels));
eval {
require Log::Log4perl;
@@ -147,86 +135,32 @@ sub _do_logS {
$value
}
-sub log_trace (&@) { _do_log( trace => _get_logger( caller ), shift @_, @_) }
-sub log_debug (&@) { _do_log( debug => _get_logger( caller ), shift @_, @_) }
-sub log_info (&@) { _do_log( info => _get_logger( caller ), shift @_, @_) }
-sub log_warn (&@) { _do_log( warn => _get_logger( caller ), shift @_, @_) }
-sub log_error (&@) { _do_log( error => _get_logger( caller ), shift @_, @_) }
-sub log_fatal (&@) { _do_log( fatal => _get_logger( caller ), shift @_, @_) }
-
-sub logS_trace (&$) { _do_logS( trace => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_debug (&$) { _do_logS( debug => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_info (&$) { _do_logS( info => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_warn (&$) { _do_logS( warn => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_error (&$) { _do_logS( error => _get_logger( caller ), $_[0], $_[1]) }
-sub logS_fatal (&$) { _do_logS( fatal => _get_logger( caller ), $_[0], $_[1]) }
-
-
-sub Dlog_trace (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( trace => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_debug (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( debug => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_info (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( info => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_warn (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( warn => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_error (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( error => _get_logger( caller ), $code, @_ );
-}
-
-sub Dlog_fatal (&@) {
- my $code = shift;
- local $_ = (@_?Data::Dumper::Concise::Dumper @_:'()');
- return _do_log( fatal => _get_logger( caller ), $code, @_ );
-}
-
-
-sub DlogS_trace (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( trace => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_debug (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( debug => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_info (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( info => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_warn (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( warn => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_error (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( error => _get_logger( caller ), $_[0], $_[1] )
-}
-
-sub DlogS_fatal (&$) {
- local $_ = Data::Dumper::Concise::Dumper $_[1];
- _do_logS( fatal => _get_logger( caller ), $_[0], $_[1] )
+for my $level (@levels) {
+ no strict 'refs';
+
+ *{"log_$level"} = sub (&@) {
+ _do_log( $level => _get_logger( caller ), shift @_, @_)
+ };
+
+ *{"logS_$level"} = sub (&$) {
+ _do_logS( $level => _get_logger( caller ), $_[0], $_[1])
+ };
+
+ *{"Dlog_$level"} = sub (&@) {
+ my ($code, @args) = @_;
+ return _do_log( $level => _get_logger( caller ), sub {
+ local $_ = (@args?Data::Dumper::Concise::Dumper @args:'()');
+ $code->(@_)
+ }, @args );
+ };
+
+ *{"DlogS_$level"} = sub (&$) {
+ my ($code, $ref) = @_;
+ _do_logS( $level => _get_logger( caller ), sub {
+ local $_ = Data::Dumper::Concise::Dumper $ref;
+ $code->($ref)
+ }, $ref )
+ };
}
1;
@@ -286,6 +220,10 @@ really basic logger, L<Log::Contextual::SimpleLogger>, but in general you
should use a real logger instead of that. For something more serious but not
overly complicated, try L<Log::Dispatchouli> (see L</SYNOPSIS> for example.)
+The reason for this module is to abstract your logging interface so that
+logging is as painless as possible, while still allowing you to switch from one
+logger to another.
+
=head1 OPTIONS
=head2 -logger
@@ -6,6 +6,8 @@ use Test::More 'no_plan';
my $var_log;
my $var;
+my @levels = qw(debug trace warn info error fatal);
+
BEGIN {
$var_log = Log::Contextual::SimpleLogger->new({
levels => [qw(trace debug info warn error fatal)],
@@ -14,166 +16,37 @@ BEGIN {
}
use Log::Contextual qw{:dlog}, -logger => $var_log;
-{
-my @foo = Dlog_trace { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_trace passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_trace is correct');
-[trace] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_trace { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_trace passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_trace is correct');
-[trace] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_debug { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_debug passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_debug is correct');
-[debug] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_debug { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_debug passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_debug is correct');
-[debug] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_info { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_info passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_info is correct');
-[info] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_info { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_info passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_info is correct');
-[info] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_warn { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_warn passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_warn is correct');
-[warn] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_warn { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_warn passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_warn is correct');
-[warn] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_error { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_error passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_error is correct');
-[error] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_error { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_error passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_error is correct');
-[error] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-{
-my @foo = Dlog_fatal { "Look ma, data: $_" } qw{frew bar baz};
-ok( eq_array(\@foo, [qw{frew bar baz}]), 'Dlog_fatal passes data through correctly');
-is( $var, <<'OUT', 'Output for Dlog_fatal is correct');
-[fatal] Look ma, data: "frew"
-"bar"
-"baz"
-OUT
-
-my $bar = DlogS_fatal { "Look ma, data: $_" } [qw{frew bar baz}];
-ok( eq_array($bar, [qw{frew bar baz}]), 'DlogS_fatal passes data through correctly');
-is( $var, <<'OUT', 'Output for DlogS_fatal is correct');
-[fatal] Look ma, data: [
- "frew",
- "bar",
- "baz"
-]
-OUT
-}
-
-
-
-{
- my @foo = Dlog_trace { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_trace passes nothing through correctly');
- is( $var, "[trace] nothing: ()\n", 'Output for Dlog_trace is correct');
-}
-
-{
- my @foo = Dlog_debug { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_debug passes nothing through correctly');
- is( $var, "[debug] nothing: ()\n", 'Output for Dlog_debug is correct');
-}
-
-{
- my @foo = Dlog_info { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_info passes nothing through correctly');
- is( $var, "[info] nothing: ()\n", 'Output for Dlog_info is correct');
-}
-
-{
- my @foo = Dlog_warn { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_warn passes nothing through correctly');
- is( $var, "[warn] nothing: ()\n", 'Output for Dlog_warn is correct');
-}
-
-{
- my @foo = Dlog_error { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_error passes nothing through correctly');
- is( $var, "[error] nothing: ()\n", 'Output for Dlog_error is correct');
-}
-{
- my @foo = Dlog_fatal { "nothing: $_" } ();
- ok( eq_array(\@foo, []), 'Dlog_fatal passes nothing through correctly');
- is( $var, "[fatal] nothing: ()\n", 'Output for Dlog_fatal is correct');
+for my $level (@levels) {
+
+ my @foo = main->can("Dlog_$level")->(
+ sub { "Look ma, data: $_" },
+ qw{frew bar baz}
+ );
+ ok(
+ eq_array(\@foo, [qw{frew bar baz}]),
+ "Dlog_$level passes data through correctly"
+ );
+ is(
+ $var, qq([$level] Look ma, data: "frew"\n"bar"\n"baz"\n),
+ "Output for Dlog_$level is correct"
+ );
+
+ my $bar = main->can("DlogS_$level")->(
+ sub { "Look ma, data: $_" },
+ [qw{frew bar baz}]
+ );
+ ok(
+ eq_array($bar, [qw{frew bar baz}]),
+ 'DlogS_trace passes data through correctly'
+ );
+ is(
+ $var, qq([$level] Look ma, data: [\n "frew",\n "bar",\n "baz"\n]\n),
+ "Output for DlogS_$level is correct"
+ );
+
+ @foo = main->can("Dlog_$level")->(sub { "nothing: $_" }, ());
+ ok( eq_array(\@foo, []), "Dlog_$level passes nothing through correctly");
+ is( $var, "[$level] nothing: ()\n", "Output for Dlog_$level is correct");
}
@@ -4,6 +4,9 @@ use warnings;
use Log::Contextual qw{:log with_logger set_logger};
use Log::Contextual::SimpleLogger;
use Test::More qw(no_plan);
+
+my @levels = qw(debug trace warn info error fatal);
+
my $var1;
my $var2;
my $var3;
@@ -76,81 +79,19 @@ SETWITHLOGGER: {
}
VANILLA: {
- log_trace { 'fiSMBoC' };
- is( $var3, "[trace] fiSMBoC\n", 'trace works');
-
- log_debug { 'fiSMBoC' };
- is( $var3, "[debug] fiSMBoC\n", 'debug works');
-
- log_info { 'fiSMBoC' };
- is( $var3, "[info] fiSMBoC\n", 'info works');
-
- log_warn { 'fiSMBoC' };
- is( $var3, "[warn] fiSMBoC\n", 'warn works');
-
- log_error { 'fiSMBoC' };
- is( $var3, "[error] fiSMBoC\n", 'error works');
-
- log_fatal { 'fiSMBoC' };
- is( $var3, "[fatal] fiSMBoC\n", 'fatal works');
-
+ for (@levels) {
+ main->can("log_$_")->(sub { 'fiSMBoC' });
+ is( $var3, "[$_] fiSMBoC\n", "$_ works");
+
+ my @vars = main->can("log_$_")->(sub { 'fiSMBoC: ' . $_[1] }, qw{foo bar baz});
+ is( $var3, "[$_] fiSMBoC: bar\n", "log_$_ works with input");
+ ok( eq_array(\@vars, [qw{foo bar baz}]), "log_$_ passes data through correctly");
+
+ my $val = main->can("logS_$_")->(sub { 'fiSMBoC: ' . $_[0] }, 'foo');
+ is( $var3, "[$_] fiSMBoC: foo\n", "logS_$_ works with input");
+ is( $val, 'foo', "logS_$_ passes data through correctly");
+ }
}
ok(!eval { Log::Contextual->import; 1 }, 'Blank Log::Contextual import dies');
-PASSTHROUGH: {
- my @vars;
-
- @vars = log_trace { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[trace] fiSMBoC: bar\n", 'log_trace works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_trace passes data through correctly');
-
- @vars = log_debug { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[debug] fiSMBoC: bar\n", 'log_debug works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_debug passes data through correctly');
-
- @vars = log_info { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[info] fiSMBoC: bar\n", 'log_info works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_info passes data through correctly');
-
- @vars = log_warn { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[warn] fiSMBoC: bar\n", 'log_warn works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_warn passes data through correctly');
-
- @vars = log_error { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[error] fiSMBoC: bar\n", 'log_error works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_error passes data through correctly');
-
- @vars = log_fatal { 'fiSMBoC: ' . $_[1] } qw{foo bar baz};
- is( $var3, "[fatal] fiSMBoC: bar\n", 'log_fatal works with input');
- ok( eq_array(\@vars, [qw{foo bar baz}]), 'log_fatal passes data through correctly');
-
-
-
- my $val;
- $val = logS_trace { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[trace] fiSMBoC: foo\n", 'logS_trace works with input');
- is( $val, 'foo', 'logS_trace passes data through correctly');
-
- $val = logS_debug { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[debug] fiSMBoC: foo\n", 'logS_debug works with input');
- is( $val, 'foo', 'logS_debug passes data through correctly');
-
- $val = logS_info { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[info] fiSMBoC: foo\n", 'logS_info works with input');
- is( $val, 'foo', 'logS_info passes data through correctly');
-
- $val = logS_warn { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[warn] fiSMBoC: foo\n", 'logS_warn works with input');
- is( $val, 'foo', 'logS_warn passes data through correctly');
-
- $val = logS_error { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[error] fiSMBoC: foo\n", 'logS_error works with input');
- is( $val, 'foo', 'logS_error passes data through correctly');
-
- $val = logS_fatal { 'fiSMBoC: ' . $_[0] } 'foo';
- is( $var3, "[fatal] fiSMBoC: foo\n", 'logS_fatal works with input');
- is( $val, 'foo', 'logS_fatal passes data through correctly');
-
- ok(!eval "logS_error { 'frew' } 'bar', 'baz'; 1", 'logS_$level dies from too many args');
-}
@@ -3,12 +3,15 @@ use warnings;
use Test::More;
-if (!eval "use Log::Log4perl;
- die if $Log::Log4perl::VERSION < 1.29;
- 1") {
- plan skip_all => 'Log::Log4perl 1.29 not installed'
-} else {
+if (eval <<'EOE'
+require Log::Log4perl;
+die if $Log::Log4perl::VERSION < 1.29;
+1
+EOE
+) {
plan tests => 2;
+} else {
+ plan skip_all => 'Log::Log4perl 1.29 not installed'
}
use FindBin;
@@ -17,16 +20,19 @@ Log::Log4perl->init("$FindBin::Bin/log4perl.conf");
use Log::Contextual qw( :log set_logger );
set_logger(Log::Log4perl->get_logger);
-log_error { 'err 14' };
+my @elines;
+
+push @elines, __LINE__ and log_error { 'err FIRST' };
sub foo {
- log_error { 'err 17' };
+ push @elines, __LINE__ and log_error { 'err SECOND' };
}
foo();
open my $log, '<', 'myerrs.log';
my @datas = <$log>;
close $log;
-is $datas[0], "file:t/log4perl.t line:20 method:main:: - err 14\n", 'file and line work with Log4perl';
-is $datas[1], "file:t/log4perl.t line:23 method:main::foo - err 17\n", 'file and line work with Log4perl in a sub';
+is $datas[0], "file:t/log4perl.t line:$elines[0] method:main:: - err FIRST\n", 'file and line work with Log4perl';
+is $datas[1], "file:t/log4perl.t line:$elines[1] method:main::foo - err SECOND\n", 'file and line work with Log4perl in a sub';
+unlink 'myerrs.log';
@@ -1,6 +1,7 @@
use strict;
use warnings;
+use File::Temp;
use Log::Contextual::SimpleLogger;
use Log::Contextual qw{:log set_logger} => -logger =>
Log::Contextual::SimpleLogger->new({levels => [qw{debug}]});
@@ -22,13 +23,16 @@ ok(eval { log_error { die 'this should live' }; 1}, 'error does not get called')
ok(eval { log_fatal { die 'this should live' }; 1}, 'fatal does not get called');
{
- my $cap;
- local *STDERR = do { open my $fh, '>', \$cap; $fh };
+ my $tempfile = File::Temp->new (UNLINK => 1, TEMPLATE => 'stderrXXXXXX');
+ my $fn = fileno ($tempfile);
+ open (STDERR, ">&$fn") or die $!;
+ log_debug { 'frew' };
- log_debug { 'frew' };
- is($cap, "[debug] frew\n", 'SimpleLogger outputs to STDERR correctly');
+ my $out = do { local @ARGV = $tempfile; <> };
+ is($out, "[debug] frew\n", 'SimpleLogger outputs to STDERR correctly');
}
+
my $response;
my $l2 = Log::Contextual::SimpleLogger->new({
levels => [qw{trace debug info warn error fatal}],